import { getToken, setToken, removeToken } from '@/utils/auth'
import { login } from '@/api/user'
import router from '@/router'
// 状态
// 初始化的时候从缓存中读取状态 并赋值到初始化的状态上
// Vuex的持久化 如何实现 ？ Vuex和前端缓存相结合
const state = {
  token: getToken() // 设置token初始状态   token持久化 => 放到缓存中
}
// 修改状态
const mutations = {
  setToken(state, token) {
    state.token = token
    // vuex变化 => 缓存数据
    setToken(token) // vuex和 缓存数据的同步
  },
  removeToken(state) {
    state.token = null
    removeToken() // 本地删除缓存
  }
}
// 执行异步
const actions = {
  async login(context, data) {
    const result = await login(data)
    context.commit('setToken', result.token)
  },
  logout(context) {
    context.commit('removeToken')
    router.push('/login')
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
